﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Roton.ZZT
{
    /// <summary>
    /// Interface for World Properties.
    /// </summary>
    interface IWorld
    {
        /// <summary>
        /// Player ammo.
        /// </summary>
        int Ammo { get; set; }

        /// <summary>
        /// Index of the board currently visible.
        /// </summary>
        int Board { get; set; }

        /// <summary>
        /// Number of cycles left for the Energizer powerup.
        /// </summary>
        int EnergyCycles { get; set; }

        /// <summary>
        /// Collection of currently set flags.
        /// </summary>
        IStringArray Flags { get; }

        /// <summary>
        /// Player gems.
        /// </summary>
        int Gems { get; set; }

        /// <summary>
        /// Player health.
        /// </summary>
        int Health { get; set; }

        /// <summary>
        /// Collection of keys.
        /// </summary>
        IBooleanArray Keys { get; }

        /// <summary>
        /// If true, this is a saved game or locked world.
        /// </summary>
        bool Locked { get; set; }

        /// <summary>
        /// World name.
        /// </summary>
        IString Name { get; }

        /// <summary>
        /// Player score.
        /// </summary>
        int Score { get; set; }

        /// <summary>
        /// Player stones of power.
        /// </summary>
        int Stones { get; set; }

        /// <summary>
        /// The number of seconds that have passed since the player entered the board.
        /// </summary>
        int TimePassed { get; set; }

        /// <summary>
        /// Player torches.
        /// </summary>
        int Torches { get; set; }

        /// <summary>
        /// Number of cycles left for the Torch powerup.
        /// </summary>
        int TorchCycles { get; set; }
    }
}
